package com.wzy.oa_sys.service.impl.robot;

import com.wzy.oa_sys.mapper.user.UserMapper;
import com.wzy.oa_sys.model.response.report.PerformanceResp;
import com.wzy.oa_sys.model.response.report.TaskRateResp;
import com.wzy.oa_sys.model.response.report.UseSituationResp;
import com.wzy.oa_sys.model.response.report.WorkTimeResp;
import com.wzy.oa_sys.service.ChatAssistant;
import com.wzy.oa_sys.service.attendance.AttendanceService;
import com.wzy.oa_sys.service.attendance.TimeStandardService;
import com.wzy.oa_sys.service.attendance.VacationService;
import com.wzy.oa_sys.service.file.FileService;
import com.wzy.oa_sys.service.notice.NoticeService;
import com.wzy.oa_sys.service.report.RePortService;
import com.wzy.oa_sys.service.robot.UploadDocxService;
import com.wzy.oa_sys.service.schedule.BoardroomService;
import com.wzy.oa_sys.service.schedule.ScheduleService;
import com.wzy.oa_sys.service.schedule.UseBoardroomService;
import com.wzy.oa_sys.service.task.TaskService;
import com.wzy.oa_sys.service.user.DeptService;
import com.wzy.oa_sys.service.user.PositionService;
import com.wzy.oa_sys.service.user.UserService;
import com.wzy.oa_sys.util.JwtUtil;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import org.springframework.beans.factory.annotation.Autowired;
import com.wzy.oa_sys.mapper.user.UserMapper;
import com.wzy.oa_sys.model.pojo.attendance.OaTimeStandards;
import com.wzy.oa_sys.model.pojo.user.OaUser;
import com.wzy.oa_sys.model.request.robot.RobotReq;
import com.wzy.oa_sys.model.response.attendance.AttendanceResp;
import com.wzy.oa_sys.model.response.attendance.VacationResp;
import com.wzy.oa_sys.model.response.file.FileResp;
import com.wzy.oa_sys.model.response.notice.NoticeResp;
import com.wzy.oa_sys.model.response.schedule.BoardroomResp;
import com.wzy.oa_sys.model.response.schedule.ScheduleResp;
import com.wzy.oa_sys.model.response.schedule.UseBoardroomDataResp;
import com.wzy.oa_sys.model.response.task.TaskResp;
import com.wzy.oa_sys.model.response.user.DeptResp;
import com.wzy.oa_sys.model.response.user.PositionResp;
import com.wzy.oa_sys.model.response.user.UserResp;
import com.wzy.oa_sys.service.ChatAssistant;
import com.wzy.oa_sys.service.attendance.AttendanceService;
import com.wzy.oa_sys.service.attendance.TimeStandardService;
import com.wzy.oa_sys.service.attendance.VacationService;
import com.wzy.oa_sys.service.file.FileService;
import com.wzy.oa_sys.service.notice.NoticeService;
import com.wzy.oa_sys.service.robot.RobotService;
import com.wzy.oa_sys.service.schedule.BoardroomService;
import com.wzy.oa_sys.service.schedule.ScheduleService;
import com.wzy.oa_sys.service.schedule.UseBoardroomService;
import com.wzy.oa_sys.service.task.TaskService;
import com.wzy.oa_sys.service.user.DeptService;
import com.wzy.oa_sys.service.user.PositionService;
import com.wzy.oa_sys.service.user.UserService;
import com.wzy.oa_sys.util.JwtUtil;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.FileOutputStream;
import java.time.LocalDateTime;
import java.util.List;
import dev.langchain4j.store.embedding.EmbeddingStoreIngestor;
import javax.annotation.Resource;
@Service
public class UploadDocxServiceImpl implements UploadDocxService {

    @Autowired
    private DeptService deptService;
    @Autowired
    private PositionService positionService;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private TaskService taskService;
    @Autowired
    private ScheduleService scheduleService;
    @Autowired
    private UseBoardroomService useBoardroomService;
    @Autowired
    private BoardroomService boardroomService;
    @Autowired
    private NoticeService noticeService;
    @Autowired
    private VacationService vacationService;
    @Autowired
    private AttendanceService attendanceService;
    @Autowired
    private TimeStandardService timeStandardService;
    @Autowired
    private FileService fileService;
    @Autowired
    private RePortService reportService;

    @Autowired
    private JwtUtil jwtUtil;
    @Autowired
    private UserService userService;

    @Override
    public String updateRobotDocxForAI(HttpServletRequest request) {
        System.out.println("更新开始时间"+LocalDateTime.now());
        Long userId = jwtUtil.extractUserId(request);
        String role = jwtUtil.extractUserRole(request);
        //部门
        List<DeptResp> deptList = deptService.getAllDeptList();
                try {
                    // 创建新的docx文档
                    XWPFDocument document = new XWPFDocument();

                    // 添加标题
                    XWPFParagraph title = document.createParagraph();
                    title.createRun().setText("部门信息");

                    // 创建表格
                    XWPFTable table = document.createTable();

                    // 创建表头
                    XWPFTableRow headerRow = table.getRow(0);
                    // 如果getCell返回null，使用addNewTableCell添加新单元格
                    headerRow.getCell(0).setText("ID");
                    headerRow.addNewTableCell().setText("部门名称");
                    headerRow.addNewTableCell().setText("地址");
                    headerRow.addNewTableCell().setText("电话");
                    headerRow.addNewTableCell().setText("邮箱");
                    headerRow.addNewTableCell().setText("管理员");
                    headerRow.addNewTableCell().setText("父级部门");
                    headerRow.addNewTableCell().setText("人数");
                    headerRow.addNewTableCell().setText("转正岗位");

                    // 添加每列的说明
                    XWPFParagraph descParagraph = document.createParagraph();
                    descParagraph.createRun().setText("说明：每条数据为一个部门的信息，且不要根据ID统计");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("ID: 部门的唯一标识符");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("部门名称: 部门的名称");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("地址: 部门的办公地址");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("电话: 部门的联系电话");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("邮箱: 部门的联系邮箱");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("管理员: 负责该部门的管理员");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("父级部门: 该部门的上级部门");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("人数: 部门的人数");
                    descParagraph.createRun().addBreak();
                    descParagraph.createRun().setText("转正岗位： 该部门正式员工的岗位数量");

                    // 添加数据到表格
                    for (DeptResp dept : deptList) {
                        XWPFTableRow row = table.createRow();
                        row.getCell(0).setText(String.valueOf(dept.getId()));
                        row.getCell(1).setText(dept.getDeptname());
                        row.getCell(2).setText(dept.getAddress());
                        row.getCell(3).setText(dept.getTel());
                        row.getCell(4).setText(dept.getEmail());
                        row.getCell(5).setText(dept.getAdmin());
                        row.getCell(6).setText(dept.getFather());
                        row.getCell(7).setText(String.valueOf(dept.getNumber()));
                        row.getCell(8).setText(String.valueOf(dept.getHc()));
                    }

                    // 将文档写入到文件,如果已存在则会更新文档
                    try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/部门信息.docx")) {
                        document.write(out);
                    }
                    // 关闭文档
                    document.close();

                } catch (Exception e) {
                    e.printStackTrace();
                }
        //职位
        List<PositionResp> positionList = positionService.getPositionList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("职位信息");
            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            // 如果getCell返回null，使用addNewTableCell添加新单元格
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("职位名称");
            headerRow.addNewTableCell().setText("等级");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("工资");
            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("职位信息表格说明：每条数据为一个职位的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("ID: 职位的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("职位名称: 职位的名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("等级: 职位的等级，数字越小等级越高");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 职位的详细描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("工资: 该职位的工资");
            // 添加数据到表格
            for (PositionResp positionResp : positionList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(positionResp.getId()));
                row.getCell(1).setText(positionResp.getPosition());
                row.getCell(2).setText(String.valueOf(positionResp.getLevel()));
                row.getCell(3).setText(positionResp.getDesc());
                row.getCell(4).setText(String.valueOf(positionResp.getSalary()));
            }

            // 将文档写入到文件,如果已存在则会更新文档
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/职位信息.docx")) {
                document.write(out);
                System.out.println("导入职位信息.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //人员
        List<UserResp> userList = userService.getUserList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("人员信息");
            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            // 如果getCell返回null，使用addNewTableCell添加新单元格
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("所在部门");
            headerRow.addNewTableCell().setText("真实姓名");
            headerRow.addNewTableCell().setText("职位");
            headerRow.addNewTableCell().setText("电话");
            headerRow.addNewTableCell().setText("性别");
            headerRow.addNewTableCell().setText("生日");
            headerRow.addNewTableCell().setText("银行卡号");
            headerRow.addNewTableCell().setText("直属上级");
            headerRow.addNewTableCell().setText("用户id");
            headerRow.addNewTableCell().setText("人员类型");
            headerRow.addNewTableCell().setText("角色");
            headerRow.addNewTableCell().setText("入职时间");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("人员信息表格说明：一行数据为一个员工的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("ID: 人员数据库中的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("所在部门: 该人员所在的部门");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("真实姓名: 就是该账号的使用人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("职位: 该人员的职位");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("电话: 该人员的电话号");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("性别: 该人员的性别");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("生日: 该人员的生日");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("银行卡号: 该人员的工资卡卡号");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("直属上级: 该人员的直属上级");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("用户id: 系统为该人员生成的唯一id");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("人员类型: 该人员的类型，分为外包，正式，实习");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("角色: 该人员的角色，用于限制用户对系统功能使用的权限");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("入职时间: 该人员的入职时间");
            // 添加数据到表格
            for (UserResp userResp : userList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(userResp.getId()));
                row.getCell(1).setText(userResp.getDeptname());
                row.getCell(2).setText(userResp.getRealname());
                row.getCell(3).setText(userResp.getPosition());
                row.getCell(4).setText(userResp.getTel());
                row.getCell(5).setText(userResp.getGender());
                row.getCell(6).setText(String.valueOf(userResp.getBirth()));
                row.getCell(7).setText(userResp.getBankcard());
                row.getCell(8).setText(userResp.getSuperior());
                row.getCell(9).setText(userResp.getAutoid());
                row.getCell(10).setText(userResp.getEmployeeType());
                row.getCell(11).setText(userResp.getRole());
                row.getCell(12).setText(String.valueOf(userResp.getJoinDate()));
            }

            // 将文档写入到文件,如果已存在则会更新文档
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/人员信息.docx")) {
                document.write(out);
                System.out.println("导入人员信息.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //任务
        List<TaskResp> taskList = taskService.getTaskList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("任务信息");

            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("标题");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("截止时间");
            headerRow.addNewTableCell().setText("推广人");
            headerRow.addNewTableCell().setText("部门名称");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("优先级");
            headerRow.addNewTableCell().setText("接收人");
            headerRow.addNewTableCell().setText("评估");
            headerRow.addNewTableCell().setText("负责人");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("任务信息表格说明：每条数据为一个任务的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 任务数据库中的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 任务的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("标题: 任务的标题");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 对该任务的描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 任务的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("截止时间: 任务的截止时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("推广人: 任务的推广人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门名称: 任务相关的部门名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 任务的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("优先级: 任务的优先级,数字越小优先级越高");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("接收人: 任务的接收人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("评估: 任务的评估信息");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("负责人: 任务的负责人名称");

            // 添加数据到表格
            for (TaskResp taskResp : taskList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(taskResp.getId()));
                row.getCell(1).setText(taskResp.getType());
                row.getCell(2).setText(taskResp.getTitle());
                row.getCell(3).setText(taskResp.getDesc());
                row.getCell(4).setText(taskResp.getStarttime().toString());
                row.getCell(5).setText(taskResp.getDeadline().toString());
                row.getCell(6).setText(taskResp.getPromoter());
                row.getCell(7).setText(taskResp.getDeptname());
                row.getCell(8).setText(taskResp.getState());
                row.getCell(9).setText(String.valueOf(taskResp.getPriority()));
                row.getCell(10).setText(taskResp.getRecipient());
                row.getCell(11).setText(taskResp.getEvaluate());
                row.getCell(12).setText(taskResp.getCharge());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/任务信息.docx")) {
                document.write(out);
                System.out.println("导入任务信息.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //我的任务
        List<TaskResp> myTaskList = taskService.getMyTaskList(userId);
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("我的任务");

            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("标题");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("截止时间");
            headerRow.addNewTableCell().setText("推广人");
            headerRow.addNewTableCell().setText("部门名称");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("优先级");
            headerRow.addNewTableCell().setText("接收人");
            headerRow.addNewTableCell().setText("评估");
            headerRow.addNewTableCell().setText("负责人");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("我的任务表格说明：每条数据为一个我的任务的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 任务数据库中的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 任务的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("标题: 任务的标题");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 对该任务的描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 任务的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("截止时间: 任务的截止时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("推广人: 任务的推广人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门名称: 任务相关的部门名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 任务的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("优先级: 任务的优先级,数字越小优先级越高");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("接收人: 任务的接收人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("评估: 任务的评估信息");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("负责人: 任务的负责人名称");

            // 添加数据到表格
            for (TaskResp taskResp : myTaskList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(taskResp.getId()));
                row.getCell(1).setText(taskResp.getType());
                row.getCell(2).setText(taskResp.getTitle());
                row.getCell(3).setText(taskResp.getDesc());
                row.getCell(4).setText(taskResp.getStarttime().toString());
                row.getCell(5).setText(taskResp.getDeadline().toString());
                row.getCell(6).setText(taskResp.getPromoter());
                row.getCell(7).setText(taskResp.getDeptname());
                row.getCell(8).setText(taskResp.getState());
                row.getCell(9).setText(String.valueOf(taskResp.getPriority()));
                row.getCell(10).setText(taskResp.getRecipient());
                row.getCell(11).setText(taskResp.getEvaluate());
                row.getCell(12).setText(taskResp.getCharge());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/我的任务.docx")) {
                document.write(out);
                System.out.println("导入我的任务.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //日程管理
        List<ScheduleResp> scheduleList = scheduleService.getScheduleList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("日程信息");

            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("标题");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("截止时间");
            headerRow.addNewTableCell().setText("发起人");
            headerRow.addNewTableCell().setText("部门名称");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("接收人");
            headerRow.addNewTableCell().setText("会议室");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("日程信息表格说明：每条数据为一个日程的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("ID: 日程的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 日程的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("标题: 日程的标题");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 对该日程的描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 日程的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("截止时间: 日程的截止时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("发起人: 日程的发起人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门名称: 日程相关的部门名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 日程的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("接收人: 日程的接收人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("会议室: 日程的举办会议室");

            // 添加数据到表格
            for (ScheduleResp scheduleResp : scheduleList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(scheduleResp.getId()));
                row.getCell(1).setText(scheduleResp.getType());
                row.getCell(2).setText(scheduleResp.getTitle());
                row.getCell(3).setText(scheduleResp.getDesc());
                row.getCell(4).setText(scheduleResp.getStarttime().toString());
                row.getCell(5).setText(scheduleResp.getDeadline().toString());
                row.getCell(6).setText(scheduleResp.getPromoter());
                row.getCell(7).setText(scheduleResp.getDeptname());
                row.getCell(8).setText(scheduleResp.getState());
                row.getCell(9).setText(scheduleResp.getRecipient());
                row.getCell(10).setText(scheduleResp.getBoardroom());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/日程信息.docx")) {
                document.write(out);
                System.out.println("导入日程信息.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //我的日程
        List<ScheduleResp> myScheduleList = scheduleService.getMyScheduleList(userId);
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("日程信息");

            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("标题");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("截止时间");
            headerRow.addNewTableCell().setText("发起人");
            headerRow.addNewTableCell().setText("部门名称");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("接收人");
            headerRow.addNewTableCell().setText("会议室");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("日程信息表格说明：每条数据为一个我的日程的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 日程的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 日程的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("标题: 日程的标题");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 对该日程的描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 日程的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("截止时间: 日程的截止时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("发起人: 日程的发起人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门名称: 日程相关的部门名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 日程的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("接收人: 日程的接收人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("会议室: 日程的举办会议室");

            // 添加数据到表格
            for (ScheduleResp scheduleResp : myScheduleList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(scheduleResp.getId()));
                row.getCell(1).setText(scheduleResp.getType());
                row.getCell(2).setText(scheduleResp.getTitle());
                row.getCell(3).setText(scheduleResp.getDesc());
                row.getCell(4).setText(scheduleResp.getStarttime().toString());
                row.getCell(5).setText(scheduleResp.getDeadline().toString());
                row.getCell(6).setText(scheduleResp.getPromoter());
                row.getCell(7).setText(scheduleResp.getDeptname());
                row.getCell(8).setText(scheduleResp.getState());
                row.getCell(9).setText(scheduleResp.getRecipient());
                row.getCell(10).setText(scheduleResp.getBoardroom());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/我的日程.docx")) {
                document.write(out);
                System.out.println("导入我的日程.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //会议室管理
        //会议室使用情况
        List<UseBoardroomDataResp> boardroomSchedules = useBoardroomService.getBoardroomSchedules();
        //会议室信息
        List<BoardroomResp> boardroomList = boardroomService.getBoardroomList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("会议室使用情况");

            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("CNO");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("结束时间");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("会议室使用情况表格说明：每条数据为一条会议室使用情况的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("CNO: 会议室的房间号");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 会议室使用的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("结束时间: 会议室使用的结束时间");

            // 添加数据到会议室使用日程表格
            for (UseBoardroomDataResp scheduleResp : boardroomSchedules) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(scheduleResp.getCno());
                row.getCell(1).setText(scheduleResp.getStarttime().toString());
                row.getCell(2).setText(scheduleResp.getDeadline().toString());
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            // 添加板房信息标题
            XWPFParagraph boardroomTitle = document.createParagraph();
            boardroomTitle.createRun().setText("会议室信息");

            // 创建会议室信息表格
            XWPFTable boardroomTable = document.createTable();
            // 创建会议室信息表头
            XWPFTableRow boardroomHeaderRow = boardroomTable.getRow(0);
            boardroomHeaderRow.getCell(0).setText("id");
            boardroomHeaderRow.addNewTableCell().setText("CNO");
            boardroomHeaderRow.addNewTableCell().setText("人数");
            boardroomHeaderRow.addNewTableCell().setText("备注");

            XWPFParagraph descParagraph1 = document.createParagraph();
            descParagraph1.createRun().setText("会议室信息说明：每条数据为一个会议室的信息，且不要根据ID统计");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("id: 会议室信息的唯一标识符");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("CNO: 会议室的房间号");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("人数: 会议室最大容纳人数");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("备注: 会议室使用的相应备注");
            // 添加数据到会议室信息表格
            for (BoardroomResp boardroomResp : boardroomList) {
                XWPFTableRow row = boardroomTable.createRow();
                row.getCell(0).setText(String.valueOf(boardroomResp.getId()));
                row.getCell(1).setText(boardroomResp.getCno());
                row.getCell(2).setText(String.valueOf(boardroomResp.getNumber()));
                row.getCell(3).setText(boardroomResp.getNotes());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/会议室以及会议室使用情况.docx")) {
                document.write(out);
                System.out.println("导入会议室以及会议室使用情况.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //通知管理
        List<NoticeResp> noticeList = noticeService.getNoticeList(userId);
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("通知信息");

            // 创建表格
            XWPFTable table = document.createTable();

            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("标题");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("发布时间");
            headerRow.addNewTableCell().setText("发布人");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("部门");
            headerRow.addNewTableCell().setText("接收人");
            headerRow.addNewTableCell().setText("审核状态");
            headerRow.addNewTableCell().setText("审核人");
            headerRow.addNewTableCell().setText("审核原因");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("通知信息表格说明：每条数据为一个通知的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 通知的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 通知的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("标题: 通知的标题");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 对该通知的描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("发布时间: 通知的发布时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("发布人: 通知的发布人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 通知的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门: 通知相关的部门名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("接收人: 通知的接收人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核状态: 通知的审核状态（待审核/审核通过/审核未通过）");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核人: 通知的审核人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核原因: 通知的审核原因");

            // 添加数据到表格
            for (NoticeResp noticeResp : noticeList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(noticeResp.getId()));
                row.getCell(1).setText(noticeResp.getType());
                row.getCell(2).setText(noticeResp.getTitle());
                row.getCell(3).setText(noticeResp.getDesc());
                row.getCell(4).setText(noticeResp.getReleasetime().toString());
                row.getCell(5).setText(noticeResp.getReleaseperson());
                row.getCell(6).setText(noticeResp.getState());
                row.getCell(7).setText(noticeResp.getDept());
                row.getCell(8).setText(noticeResp.getRecipient());
                row.getCell(9).setText(noticeResp.getExamine());
                row.getCell(10).setText(noticeResp.getReviewer());
                row.getCell(11).setText(noticeResp.getExReason());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/通知信息.docx")) {
                document.write(out);
                System.out.println("导入通知信息.docx成功");
            }

            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //通知列表
        List<NoticeResp> myNoticeList = noticeService.getMyNoticeList(userId, role);
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("通知列表(我可接收的通知)");

            // 创建表格
            XWPFTable table = document.createTable();

            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("标题");
            headerRow.addNewTableCell().setText("描述");
            headerRow.addNewTableCell().setText("发布时间");
            headerRow.addNewTableCell().setText("发布人");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("部门");
            headerRow.addNewTableCell().setText("接收人");
            headerRow.addNewTableCell().setText("链接类型");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("通知列表(我可接收的通知)说明：每条数据为一个我可接收的通知的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 通知的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 通知的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("标题: 通知的标题");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("描述: 对该通知的描述");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("发布时间: 通知的发布时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("发布人: 通知的发布人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 通知的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门: 通知相关的部门名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("接收人: 通知的接收人");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("链接类型: 通知的链接类型，代表更新的内容");

            // 添加数据到表格
            for (NoticeResp noticeResp : myNoticeList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(noticeResp.getId()));
                row.getCell(1).setText(noticeResp.getType());
                row.getCell(2).setText(noticeResp.getTitle());
                row.getCell(3).setText(noticeResp.getDesc());
                row.getCell(4).setText(noticeResp.getReleasetime().toString());
                row.getCell(5).setText(noticeResp.getReleaseperson());
                row.getCell(6).setText(noticeResp.getState());
                row.getCell(7).setText(noticeResp.getDept());
                row.getCell(8).setText(noticeResp.getRecipient());
                row.getCell(9).setText(noticeResp.getLinkType());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/通知列表(我可接收的通知).docx")) {
                document.write(out);
                System.out.println("导入通知列表(我可接收的通知).docx成功");
            }

            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //请假管理
        List<VacationResp> vacationList = vacationService.getVacationList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("请假管理（未审核）");

            // 创建表格
            XWPFTable table = document.createTable();

            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("姓名");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("截止时间");
            headerRow.addNewTableCell().setText("理由");
            headerRow.addNewTableCell().setText("申请时间");
            headerRow.addNewTableCell().setText("审核状态");
            headerRow.addNewTableCell().setText("审核人");
            headerRow.addNewTableCell().setText("审核理由");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("请假管理（未审核）表格说明：每条数据为一个请假管理(未审核)的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 请假的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 请假的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("姓名: 请假人的姓名");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 请假的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 请假的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("截止时间: 请假的截止时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("理由: 请假的理由");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("申请时间: 请假申请的时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核状态: 请假审核状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核人: 审核请假的人员");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核理由: 是否通过的原因");

            // 添加数据到表格
            for (VacationResp vacationResp : vacationList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(vacationResp.getId()));
                row.getCell(1).setText(vacationResp.getState());
                row.getCell(2).setText(vacationResp.getName());
                row.getCell(3).setText(vacationResp.getType());
                row.getCell(4).setText(vacationResp.getStarttime().toString());
                row.getCell(5).setText(vacationResp.getDeadline().toString());
                row.getCell(6).setText(vacationResp.getReason());
                row.getCell(7).setText(vacationResp.getTime().toString());
                row.getCell(8).setText(vacationResp.getExamine());
                row.getCell(9).setText(vacationResp.getReviewer());
                row.getCell(10).setText(vacationResp.getExreason());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/请假管理（未审核）.docx")) {
                document.write(out);
                System.out.println("导入请假管理（未审核）.docx成功");
            }

            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //请假列表
        List<VacationResp> approvedVacationList = vacationService.getICanSeeVacations(request);
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("请假管理（已审核）");

            // 创建表格
            XWPFTable table = document.createTable();

            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("状态");
            headerRow.addNewTableCell().setText("姓名");
            headerRow.addNewTableCell().setText("类型");
            headerRow.addNewTableCell().setText("开始时间");
            headerRow.addNewTableCell().setText("截止时间");
            headerRow.addNewTableCell().setText("理由");
            headerRow.addNewTableCell().setText("申请时间");
            headerRow.addNewTableCell().setText("审核状态");
            headerRow.addNewTableCell().setText("审核人");
            headerRow.addNewTableCell().setText("审核理由");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("请假管理（已审核）表格说明：每条数据为一个请假管理(已审核)的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 请假的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("状态: 请假的当前状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("姓名: 请假人的姓名");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("类型: 请假的类型");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("开始时间: 请假的开始时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("截止时间: 请假的截止时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("理由: 请假的理由");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("申请时间: 请假申请的时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核状态: 请假审核状态");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核人: 审核请假的人员");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("审核理由: 是否通过的原因");

            // 添加数据到表格
            for (VacationResp vacationResp : approvedVacationList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(vacationResp.getId()));
                row.getCell(1).setText(vacationResp.getState());
                row.getCell(2).setText(vacationResp.getName());
                row.getCell(3).setText(vacationResp.getType());
                row.getCell(4).setText(vacationResp.getStarttime().toString());
                row.getCell(5).setText(vacationResp.getDeadline().toString());
                row.getCell(6).setText(vacationResp.getReason());
                row.getCell(7).setText(vacationResp.getTime().toString());
                row.getCell(8).setText(vacationResp.getExamine());
                row.getCell(9).setText(vacationResp.getReviewer());
                row.getCell(10).setText(vacationResp.getExreason());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/请假管理（已审核）.docx")) {
                document.write(out);
                System.out.println("导入请假管理（已审核）.docx成功");
            }

            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //报表列表
        List<WorkTimeResp> workTime = reportService.getWorkTime(request);//工作时间
        List<PerformanceResp> performance = reportService.getPerformance(request);//绩效
        List<TaskRateResp> taskRate = reportService.getTaskRate(request);//任务完成率
        List<UseSituationResp> useSituation = reportService.getUseSituation();//模块使用次数
        try{
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("工作时间表");
            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("员工ID");
            headerRow.addNewTableCell().setText("员工名称");
            headerRow.addNewTableCell().setText("部门Id");
            headerRow.addNewTableCell().setText("工作时间");
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("工作时间表格说明：每条数据为一个员工实际工作时间的信息");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("ID: 员工的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("员工名称: 就是员工姓名");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门Id: 该员工所在的部门ID");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("工作时间: 该员工实际工作时间");
            // 添加数据到表格
            for (WorkTimeResp workTimeResp : workTime) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(workTimeResp.getId()));
                row.getCell(1).setText(workTimeResp.getName());
                row.getCell(2).setText(String.valueOf(workTimeResp.getDeptId()));
                row.getCell(3).setText(String.valueOf(workTimeResp.getWorkTime()));
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title1 = document.createParagraph();
            title1.createRun().setText("绩效表");
            // 创建表格
            XWPFTable table1 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow1 = table1.getRow(0);
            headerRow1.getCell(0).setText("员工ID");
            headerRow1.addNewTableCell().setText("员工名称");
            headerRow1.addNewTableCell().setText("部门Id");
            headerRow1.addNewTableCell().setText("部门名称");
            headerRow1.addNewTableCell().setText("绩效");
            XWPFParagraph descParagraph1 = document.createParagraph();
            descParagraph1.createRun().setText("绩效表格说明：每条数据为一个员工绩效的信息");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("ID: 员工的唯一标识符");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("员工名称: 就是员工姓名");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("部门Id: 该员工所在的部门ID");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("部门名称: 该员工所在的部门名称");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("绩效: 该员工的绩效");
            // 添加数据到表格
            for (PerformanceResp performanceResp : performance) {
                XWPFTableRow row = table1.createRow();
                row.getCell(0).setText(String.valueOf(performanceResp.getId()));
                row.getCell(1).setText(performanceResp.getName());
                row.getCell(2).setText(String.valueOf(performanceResp.getDeptId()));
                row.getCell(3).setText(performanceResp.getDeptName());
                row.getCell(4).setText(String.valueOf(performanceResp.getScore()));
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title2 = document.createParagraph();
            title2.createRun().setText("任务完成率表");
            // 创建表格
            XWPFTable table2 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow2 = table2.getRow(0);
            headerRow2.getCell(0).setText("员工ID");
            headerRow2.addNewTableCell().setText("员工名称");
            headerRow2.addNewTableCell().setText("部门Id");
            headerRow2.addNewTableCell().setText("任务完成率");
            XWPFParagraph descParagraph2 = document.createParagraph();
            descParagraph2.createRun().setText("任务完成率表格说明：每条数据为一个员工任务完成率的信息");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("ID: 员工的唯一标识符");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("员工名称: 就是员工姓名");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("部门Id: 该员工所在的部门ID");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("任务完成率: 该员工的任务完成率");
            // 添加数据到表格
            for (TaskRateResp taskRateResp : taskRate) {
                XWPFTableRow row = table2.createRow();
                row.getCell(0).setText(String.valueOf(taskRateResp.getId()));
                row.getCell(1).setText(taskRateResp.getName());
                row.getCell(2).setText(String.valueOf(taskRateResp.getDeptId()));
                row.getCell(3).setText(String.valueOf(taskRateResp.getRate()));
            }
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title3 = document.createParagraph();
            title3.createRun().setText("模块使用情况表");
            // 创建表格
            XWPFTable table3 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow3 = table3.getRow(0);
            headerRow3.getCell(0).setText("模块名称");
            headerRow3.addNewTableCell().setText("使用次数");
            XWPFParagraph descParagraph3 = document.createParagraph();
            descParagraph3.createRun().setText("模块使用情况表格说明：每条数据为一个模块的使用情况信息");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("模块名称: 模块的名称");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("使用次数: 模块的使用次数");
            // 添加数据到表格
            for (UseSituationResp useSituationResp : useSituation) {
                XWPFTableRow row = table3.createRow();
                row.getCell(0).setText(String.valueOf(useSituationResp.getName()));
                row.getCell(1).setText(String.valueOf(useSituationResp.getCount()));
            }
            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/报表列表.docx")) {
                document.write(out);
                System.out.println("导入报表列表.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //审批管理
            //我能审批的公告
        List<NoticeResp> iCanApprovedNotices = noticeService.getICanApprovedNotices(userId);
        List<TaskResp> iCanApprovedTask = taskService.getICanApprovedTask(userId);
            //我能审批的请假信息
            List<VacationResp> iCanApprovedVacations = vacationService.getICanApprovedVacations(userId);
            try {
                // 创建新的docx文档
                XWPFDocument document = new XWPFDocument();

                // 添加标题
                XWPFParagraph title = document.createParagraph();
                title.createRun().setText("通知审批表");

                // 创建任务信息表格
                XWPFTable table = document.createTable();
                // 创建任务表头
                XWPFTableRow headerRow = table.getRow(0);
                headerRow.getCell(0).setText("ID");
                headerRow.addNewTableCell().setText("类型");
                headerRow.addNewTableCell().setText("标题");
                headerRow.addNewTableCell().setText("描述");
                headerRow.addNewTableCell().setText("发布时间");
                headerRow.addNewTableCell().setText("发布人");
                headerRow.addNewTableCell().setText("状态");
                headerRow.addNewTableCell().setText("部门");
                headerRow.addNewTableCell().setText("接收人");
                headerRow.addNewTableCell().setText("审核状态");
                headerRow.addNewTableCell().setText("审核人");
                headerRow.addNewTableCell().setText("审核原因");

                // 添加每列的说明
                XWPFParagraph descParagraph = document.createParagraph();
                descParagraph.createRun().setText("通知审批表格说明：每条数据为一个待审批通知的信息，且不要根据ID统计");
                descParagraph.createRun().addBreak();

                descParagraph.createRun().setText("ID: 通知的唯一标识符");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("类型: 通知的类型");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("标题: 通知的标题");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("描述: 对该通知的描述");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("发布时间: 通知的发布时间");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("发布人: 通知的发布人");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("状态: 通知的当前状态");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("部门: 通知相关的部门名称");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("接收人: 通知的接收人");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("审核状态: 通知的审核状态（待审核/审核通过/审核未通过）");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("审核人: 通知的审核人");
                descParagraph.createRun().addBreak();
                descParagraph.createRun().setText("审核原因: 通知的审核原因");

                // 添加数据到表格
                for (NoticeResp noticeResp : iCanApprovedNotices) {
                    XWPFTableRow row = table.createRow();
                    row.getCell(0).setText(String.valueOf(noticeResp.getId()));
                    row.getCell(1).setText(noticeResp.getType());
                    row.getCell(2).setText(noticeResp.getTitle());
                    row.getCell(3).setText(noticeResp.getDesc());
                    row.getCell(4).setText(noticeResp.getReleasetime().toString());
                    row.getCell(5).setText(noticeResp.getReleaseperson());
                    row.getCell(6).setText(noticeResp.getState());
                    row.getCell(7).setText(noticeResp.getDept());
                    row.getCell(8).setText(noticeResp.getRecipient());
                    row.getCell(9).setText(noticeResp.getExamine());
                    row.getCell(10).setText(noticeResp.getReviewer());
                    row.getCell(11).setText(noticeResp.getExReason());
                }

                // 插入分隔段落
                document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

                XWPFParagraph title1 = document.createParagraph();
                title1.createRun().setText("请假审批表");
                // 添加请假信息表格
                XWPFTable vacationTable = document.createTable();

                // 创建请假信息表头
                XWPFTableRow vacationHeaderRow = vacationTable.getRow(0);
                vacationHeaderRow.getCell(0).setText("ID");
                vacationHeaderRow.addNewTableCell().setText("状态");
                vacationHeaderRow.addNewTableCell().setText("姓名");
                vacationHeaderRow.addNewTableCell().setText("类型");
                vacationHeaderRow.addNewTableCell().setText("开始时间");
                vacationHeaderRow.addNewTableCell().setText("截止时间");
                vacationHeaderRow.addNewTableCell().setText("理由");
                vacationHeaderRow.addNewTableCell().setText("申请时间");
                vacationHeaderRow.addNewTableCell().setText("审核状态");
                vacationHeaderRow.addNewTableCell().setText("审核人");
                vacationHeaderRow.addNewTableCell().setText("审核理由");

                // 添加每列的说明
                XWPFParagraph descParagraph1 = document.createParagraph();
                descParagraph1.createRun().setText("请假审核表格说明：每条数据为一个请假待审批的信息，且不要根据ID统计");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("ID: 请假的唯一标识符");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("状态: 请假的当前状态");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("姓名: 请假人的姓名");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("类型: 请假的类型");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("开始时间: 请假的开始时间");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("截止时间: 请假的截止时间");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("理由: 请假的理由");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("申请时间: 请假申请的时间");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("审核状态: 请假审核状态");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("审核人: 审核请假的人员");
                descParagraph1.createRun().addBreak();
                descParagraph1.createRun().setText("审核理由: 是否通过的原因");

                // 添加数据到请假信息表格
                for (VacationResp vacationResp : iCanApprovedVacations) {
                    XWPFTableRow row = vacationTable.createRow();
                    row.getCell(0).setText(String.valueOf(vacationResp.getId()));
                    row.getCell(1).setText(vacationResp.getState());
                    row.getCell(2).setText(vacationResp.getName());
                    row.getCell(3).setText(vacationResp.getType());
                    row.getCell(4).setText(vacationResp.getStarttime().toString());
                    row.getCell(5).setText(vacationResp.getDeadline().toString());
                    row.getCell(6).setText(vacationResp.getReason());
                    row.getCell(7).setText(vacationResp.getTime().toString());
                    row.getCell(8).setText(vacationResp.getExamine());
                    row.getCell(9).setText(vacationResp.getReviewer());
                    row.getCell(10).setText(vacationResp.getExreason());
                }

                // 将文档写入到文件
                try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/公告审批与请假审批.docx")) {
                    document.write(out);
                    System.out.println("导入公告审批与请假审批.docx成功");
                }
                // 关闭文档
                document.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        //考勤管理
        List<AttendanceResp> attendanceList = attendanceService.getAttendanceList(request);
        List<OaTimeStandards> standards = timeStandardService.getStandards();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("考勤记录表");

            // 创建考勤信息表格
            XWPFTable attendanceTable = document.createTable();
            // 创建考勤表头
            XWPFTableRow attendanceHeaderRow = attendanceTable.getRow(0);
            attendanceHeaderRow.getCell(0).setText("类型");
            attendanceHeaderRow.addNewTableCell().setText("姓名");
            attendanceHeaderRow.addNewTableCell().setText("打卡时间");
            attendanceHeaderRow.addNewTableCell().setText("备注");
            attendanceHeaderRow.addNewTableCell().setText("状态");

            // 添加每列的说明
            XWPFParagraph attendanceDescParagraph = document.createParagraph();
            attendanceDescParagraph.createRun().setText("考勤记录说明：每条数据为一个用户的一条打卡记录的信息，且不要根据ID统计");
            attendanceDescParagraph.createRun().addBreak();
            attendanceDescParagraph.createRun().setText("类型: 考勤记录的类型，分为上班，下班");
            attendanceDescParagraph.createRun().addBreak();
            attendanceDescParagraph.createRun().setText("姓名: 考勤记录者的姓名");
            attendanceDescParagraph.createRun().addBreak();
            attendanceDescParagraph.createRun().setText("时间: 考勤记录的时间");
            attendanceDescParagraph.createRun().addBreak();
            attendanceDescParagraph.createRun().setText("备注: 针对考勤记录的补充说明");
            attendanceDescParagraph.createRun().addBreak();
            attendanceDescParagraph.createRun().setText("状态: 考勤的状态");

            // 添加数据到考勤信息表格
            for (AttendanceResp attendance : attendanceList) {
                XWPFTableRow row = attendanceTable.createRow();
                row.getCell(0).setText(attendance.getType());
                row.getCell(1).setText(attendance.getName());
                row.getCell(2).setText(attendance.getTime());
                row.getCell(3).setText(attendance.getNotes());
                row.getCell(4).setText(attendance.getState());
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            XWPFParagraph title1 = document.createParagraph();
            title1.createRun().setText("考勤标准表");

            // 创建时间标准信息表格
            XWPFTable standardTable = document.createTable();

            // 创建时间标准表头
            XWPFTableRow standardHeaderRow = standardTable.getRow(0);
            standardHeaderRow.getCell(0).setText("时间ID");
            standardHeaderRow.addNewTableCell().setText("时间");
            standardHeaderRow.addNewTableCell().setText("类型");

            // 添加每列的说明
            XWPFParagraph standardDescParagraph = document.createParagraph();
            standardDescParagraph.createRun().setText("时间标准说明：每条数据为上班或者下班的时间标准的信息，且不要根据ID统计");
            standardDescParagraph.createRun().addBreak();
            standardDescParagraph.createRun().setText("时间ID: 时间标准的唯一标识符");
            standardDescParagraph.createRun().addBreak();
            standardDescParagraph.createRun().setText("时间: 时间的标准值");
            standardDescParagraph.createRun().addBreak();
            standardDescParagraph.createRun().setText("类型: 时间标准的类型，分为上班，下班");

            // 添加数据到时间标准信息表格
            for (OaTimeStandards standard : standards) {
                XWPFTableRow row = standardTable.createRow();
                row.getCell(0).setText(String.valueOf(standard.getNTimeId()));
                row.getCell(1).setText(standard.getDtTime().toString());
                row.getCell(2).setText(standard.getCType());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/考勤记录与考勤标准.docx")) {
                document.write(out);
                System.out.println("导入考勤记录与考勤标准.docx成功");
            }
            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //文件管理
        List<FileResp> fileList = fileService.fileList();
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();

            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("文件管理");

            // 创建表格
            XWPFTable table = document.createTable();

            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            headerRow.getCell(0).setText("文件ID");
            headerRow.addNewTableCell().setText("文件名称");
            headerRow.addNewTableCell().setText("文件大小");
            headerRow.addNewTableCell().setText("更新时间");
            headerRow.addNewTableCell().setText("上传人姓名");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("文件管理表格说明：每条数据为一个文件的信息，且不要根据ID统计");
            descParagraph.createRun().addBreak();

            descParagraph.createRun().setText("文件ID: 文件的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("文件名称: 文件的名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("文件大小: 文件的大小");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("更新时间: 文件最后的更新时间");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("上传人姓名: 上传该文件的用户姓名");

            // 添加数据到表格
            for (FileResp fileResp : fileList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(fileResp.getNFileId()));
                row.getCell(1).setText(fileResp.getCFileName());
                row.getCell(2).setText(fileResp.getCFileName());
                row.getCell(3).setText(fileResp.getDtUploadTime().toString());
                row.getCell(4).setText(fileResp.getCUserName());
            }

            // 将文档写入到文件
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/文件管理.docx")) {
                document.write(out);
                System.out.println("导入文件管理.docx成功");
            }

            // 关闭文档
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //总docx
        try {
            // 创建新的docx文档
            XWPFDocument document = new XWPFDocument();
            // 添加标题
            XWPFParagraph title = document.createParagraph();
            title.createRun().setText("部门信息");
            // 创建表格
            XWPFTable table = document.createTable();
            // 创建表头
            XWPFTableRow headerRow = table.getRow(0);
            // 如果getCell返回null，使用addNewTableCell添加新单元格
            headerRow.getCell(0).setText("ID");
            headerRow.addNewTableCell().setText("部门名称");
            headerRow.addNewTableCell().setText("地址");
            headerRow.addNewTableCell().setText("电话");
            headerRow.addNewTableCell().setText("邮箱");
            headerRow.addNewTableCell().setText("管理员");
            headerRow.addNewTableCell().setText("父级部门");
            headerRow.addNewTableCell().setText("人数");
            headerRow.addNewTableCell().setText("转正岗位");

            // 添加每列的说明
            XWPFParagraph descParagraph = document.createParagraph();
            descParagraph.createRun().setText("说明：");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("ID: 部门的唯一标识符");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("部门名称: 部门的名称");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("地址: 部门的办公地址");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("电话: 部门的联系电话");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("邮箱: 部门的联系邮箱");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("管理员: 负责该部门的管理员");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("父级部门: 该部门的上级部门");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("人数: 部门的人数");
            descParagraph.createRun().addBreak();
            descParagraph.createRun().setText("转正岗位： 该部门正式员工的岗位数量");

            // 添加数据到表格
            for (DeptResp dept : deptList) {
                XWPFTableRow row = table.createRow();
                row.getCell(0).setText(String.valueOf(dept.getId()));
                row.getCell(1).setText(dept.getDeptname());
                row.getCell(2).setText(dept.getAddress());
                row.getCell(3).setText(dept.getTel());
                row.getCell(4).setText(dept.getEmail());
                row.getCell(5).setText(dept.getAdmin());
                row.getCell(6).setText(dept.getFather());
                row.getCell(7).setText(String.valueOf(dept.getNumber()));
                row.getCell(8).setText(String.valueOf(dept.getHc()));
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            XWPFParagraph title1 = document.createParagraph();
            // 添加标题
            title1.createRun().setText("职位信息");
            // 创建表格
            XWPFTable table1 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow1 = table1.getRow(0);
            // 如果getCell返回null，使用addNewTableCell添加新单元格
            headerRow1.getCell(0).setText("ID");
            headerRow1.addNewTableCell().setText("职位名称");
            headerRow1.addNewTableCell().setText("等级");
            headerRow1.addNewTableCell().setText("描述");
            headerRow1.addNewTableCell().setText("工资");
            // 添加每列的说明
            XWPFParagraph descParagraph1 = document.createParagraph();
            descParagraph1.createRun().setText("职位信息表格说明：");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("ID: 职位的唯一标识符");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("职位名称: 职位的名称");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("等级: 职位的等级，数字越小等级越高");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("描述: 职位的详细描述");
            descParagraph1.createRun().addBreak();
            descParagraph1.createRun().setText("工资: 该职位的工资");
            // 添加数据到表格
            for (PositionResp positionResp : positionList) {
                XWPFTableRow row = table1.createRow();
                row.getCell(0).setText(String.valueOf(positionResp.getId()));
                row.getCell(1).setText(positionResp.getPosition());
                row.getCell(2).setText(String.valueOf(positionResp.getLevel()));
                row.getCell(3).setText(positionResp.getDesc());
                row.getCell(4).setText(String.valueOf(positionResp.getSalary()));
            }
            //人员
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            // 添加标题
            XWPFParagraph title2 = document.createParagraph();
            title2.createRun().setText("人员信息");
            // 创建表格
            XWPFTable table2 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow2 = table2.getRow(0);
            // 如果getCell返回null，使用addNewTableCell添加新单元格
            headerRow2.getCell(0).setText("ID");
            headerRow2.addNewTableCell().setText("所在部门");
            headerRow2.addNewTableCell().setText("真实姓名");
            headerRow2.addNewTableCell().setText("职位");
            headerRow2.addNewTableCell().setText("电话");
            headerRow2.addNewTableCell().setText("性别");
            headerRow2.addNewTableCell().setText("生日");
            headerRow2.addNewTableCell().setText("银行卡号");
            headerRow2.addNewTableCell().setText("直属上级");
            headerRow2.addNewTableCell().setText("用户id");
            headerRow2.addNewTableCell().setText("人员类型");
            headerRow2.addNewTableCell().setText("角色");
            headerRow2.addNewTableCell().setText("入职时间");

            // 添加每列的说明
            XWPFParagraph descParagraph2 = document.createParagraph();
            descParagraph2.createRun().setText("人员信息表格说明：");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("ID: 人员数据库中的唯一标识符");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("所在部门: 该人员所在的部门");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("真实姓名: 就是该账号的使用人");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("职位: 该人员的职位");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("电话: 该人员的电话号");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("性别: 该人员的性别");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("生日: 该人员的生日");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("银行卡号: 该人员的工资卡卡号");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("直属上级: 该人员的直属上级");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("用户id: 系统为该人员生成的唯一id");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("人员类型: 该人员的类型，分为外包，正式，实习");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("角色: 该人员的角色，用于限制用户对系统功能使用的权限");
            descParagraph2.createRun().addBreak();
            descParagraph2.createRun().setText("入职时间: 该人员的入职时间");
            // 添加数据到表格
            for (UserResp userResp : userList) {
                XWPFTableRow row = table2.createRow();
                row.getCell(0).setText(String.valueOf(userResp.getId()));
                row.getCell(1).setText(userResp.getDeptname());
                row.getCell(2).setText(userResp.getRealname());
                row.getCell(3).setText(userResp.getPosition());
                row.getCell(4).setText(userResp.getTel());
                row.getCell(5).setText(userResp.getGender());
                row.getCell(6).setText(String.valueOf(userResp.getBirth()));
                row.getCell(7).setText(userResp.getBankcard());
                row.getCell(8).setText(userResp.getSuperior());
                row.getCell(9).setText(userResp.getAutoid());
                row.getCell(10).setText(userResp.getEmployeeType());
                row.getCell(11).setText(userResp.getRole());
                row.getCell(12).setText(String.valueOf(userResp.getJoinDate()));
            }
            //任务
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title3 = document.createParagraph();
            title3.createRun().setText("任务信息");

            // 创建表格
            XWPFTable table3 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow3 = table3.getRow(0);
            headerRow3.getCell(0).setText("ID");
            headerRow3.addNewTableCell().setText("类型");
            headerRow3.addNewTableCell().setText("标题");
            headerRow3.addNewTableCell().setText("描述");
            headerRow3.addNewTableCell().setText("开始时间");
            headerRow3.addNewTableCell().setText("截止时间");
            headerRow3.addNewTableCell().setText("推广人");
            headerRow3.addNewTableCell().setText("部门名称");
            headerRow3.addNewTableCell().setText("状态");
            headerRow3.addNewTableCell().setText("优先级");
            headerRow3.addNewTableCell().setText("接收人");
            headerRow3.addNewTableCell().setText("评估");
            headerRow3.addNewTableCell().setText("负责人");

            // 添加每列的说明
            XWPFParagraph descParagraph3 = document.createParagraph();
            descParagraph3.createRun().setText("任务信息表格说明：");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("ID: 任务数据库中的唯一标识符");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("类型: 任务的类型");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("标题: 任务的标题");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("描述: 对该任务的描述");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("开始时间: 任务的开始时间");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("截止时间: 任务的截止时间");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("推广人: 任务的推广人");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("部门名称: 任务相关的部门名称");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("状态: 任务的当前状态");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("优先级: 任务的优先级,数字越小优先级越高");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("接收人: 任务的接收人");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("评估: 任务的评估信息");
            descParagraph3.createRun().addBreak();
            descParagraph3.createRun().setText("负责人: 任务的负责人名称");

            // 添加数据到表格
            for (TaskResp taskResp : taskList) {
                XWPFTableRow row = table3.createRow();
                row.getCell(0).setText(String.valueOf(taskResp.getId()));
                row.getCell(1).setText(taskResp.getType());
                row.getCell(2).setText(taskResp.getTitle());
                row.getCell(3).setText(taskResp.getDesc());
                row.getCell(4).setText(taskResp.getStarttime().toString());
                row.getCell(5).setText(taskResp.getDeadline().toString());
                row.getCell(6).setText(taskResp.getPromoter());
                row.getCell(7).setText(taskResp.getDeptname());
                row.getCell(8).setText(taskResp.getState());
                row.getCell(9).setText(String.valueOf(taskResp.getPriority()));
                row.getCell(10).setText(taskResp.getRecipient());
                row.getCell(11).setText(taskResp.getEvaluate());
                row.getCell(12).setText(taskResp.getCharge());
            }
            //我的任务
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title4 = document.createParagraph();
            title4.createRun().setText("我的任务");

            // 创建表格
            XWPFTable table4 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow4 = table4.getRow(0);
            headerRow4.getCell(0).setText("ID");
            headerRow4.addNewTableCell().setText("类型");
            headerRow4.addNewTableCell().setText("标题");
            headerRow4.addNewTableCell().setText("描述");
            headerRow4.addNewTableCell().setText("开始时间");
            headerRow4.addNewTableCell().setText("截止时间");
            headerRow4.addNewTableCell().setText("推广人");
            headerRow4.addNewTableCell().setText("部门名称");
            headerRow4.addNewTableCell().setText("状态");
            headerRow4.addNewTableCell().setText("优先级");
            headerRow4.addNewTableCell().setText("接收人");
            headerRow4.addNewTableCell().setText("评估");
            headerRow4.addNewTableCell().setText("负责人");

            // 添加每列的说明
            XWPFParagraph descParagraph4 = document.createParagraph();
            descParagraph4.createRun().setText("我的任务表格说明：");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("ID: 任务数据库中的唯一标识符");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("类型: 任务的类型");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("标题: 任务的标题");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("描述: 对该任务的描述");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("开始时间: 任务的开始时间");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("截止时间: 任务的截止时间");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("推广人: 任务的推广人");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("部门名称: 任务相关的部门名称");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("状态: 任务的当前状态");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("优先级: 任务的优先级,数字越小优先级越高");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("接收人: 任务的接收人");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("评估: 任务的评估信息");
            descParagraph4.createRun().addBreak();
            descParagraph4.createRun().setText("负责人: 任务的负责人名称");

            // 添加数据到表格
            for (TaskResp taskResp : myTaskList) {
                XWPFTableRow row = table4.createRow();
                row.getCell(0).setText(String.valueOf(taskResp.getId()));
                row.getCell(1).setText(taskResp.getType());
                row.getCell(2).setText(taskResp.getTitle());
                row.getCell(3).setText(taskResp.getDesc());
                row.getCell(4).setText(taskResp.getStarttime().toString());
                row.getCell(5).setText(taskResp.getDeadline().toString());
                row.getCell(6).setText(taskResp.getPromoter());
                row.getCell(7).setText(taskResp.getDeptname());
                row.getCell(8).setText(taskResp.getState());
                row.getCell(9).setText(String.valueOf(taskResp.getPriority()));
                row.getCell(10).setText(taskResp.getRecipient());
                row.getCell(11).setText(taskResp.getEvaluate());
                row.getCell(12).setText(taskResp.getCharge());
            }
            //日程
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title5 = document.createParagraph();
            title5.createRun().setText("日程信息");

            // 创建表格
            XWPFTable table5 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow5 = table5.getRow(0);
            headerRow5.getCell(0).setText("ID");
            headerRow5.addNewTableCell().setText("类型");
            headerRow5.addNewTableCell().setText("标题");
            headerRow5.addNewTableCell().setText("描述");
            headerRow5.addNewTableCell().setText("开始时间");
            headerRow5.addNewTableCell().setText("截止时间");
            headerRow5.addNewTableCell().setText("发起人");
            headerRow5.addNewTableCell().setText("部门名称");
            headerRow5.addNewTableCell().setText("状态");
            headerRow5.addNewTableCell().setText("接收人");
            headerRow5.addNewTableCell().setText("会议室");

            // 添加每列的说明
            XWPFParagraph descParagraph5 = document.createParagraph();
            descParagraph5.createRun().setText("日程信息表格说明：");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("ID: 日程的唯一标识符");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("类型: 日程的类型");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("标题: 日程的标题");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("描述: 对该日程的描述");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("开始时间: 日程的开始时间");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("截止时间: 日程的截止时间");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("发起人: 日程的发起人");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("部门名称: 日程相关的部门名称");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("状态: 日程的当前状态");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("接收人: 日程的接收人");
            descParagraph5.createRun().addBreak();
            descParagraph5.createRun().setText("会议室: 日程的举办会议室");

            // 添加数据到表格
            for (ScheduleResp scheduleResp : scheduleList) {
                XWPFTableRow row = table5.createRow();
                row.getCell(0).setText(String.valueOf(scheduleResp.getId()));
                row.getCell(1).setText(scheduleResp.getType());
                row.getCell(2).setText(scheduleResp.getTitle());
                row.getCell(3).setText(scheduleResp.getDesc());
                row.getCell(4).setText(scheduleResp.getStarttime().toString());
                row.getCell(5).setText(scheduleResp.getDeadline().toString());
                row.getCell(6).setText(scheduleResp.getPromoter());
                row.getCell(7).setText(scheduleResp.getDeptname());
                row.getCell(8).setText(scheduleResp.getState());
                row.getCell(9).setText(scheduleResp.getRecipient());
                row.getCell(10).setText(scheduleResp.getBoardroom());
            }

            //我的日程
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title6 = document.createParagraph();
            title6.createRun().setText("我的日程");

            // 创建表格
            XWPFTable table6 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow6 = table6.getRow(0);
            headerRow6.getCell(0).setText("ID");
            headerRow6.addNewTableCell().setText("类型");
            headerRow6.addNewTableCell().setText("标题");
            headerRow6.addNewTableCell().setText("描述");
            headerRow6.addNewTableCell().setText("开始时间");
            headerRow6.addNewTableCell().setText("截止时间");
            headerRow6.addNewTableCell().setText("发起人");
            headerRow6.addNewTableCell().setText("部门名称");
            headerRow6.addNewTableCell().setText("状态");
            headerRow6.addNewTableCell().setText("接收人");
            headerRow6.addNewTableCell().setText("会议室");

            // 添加每列的说明
            XWPFParagraph descParagraph6 = document.createParagraph();
            descParagraph6.createRun().setText("我的日程说明：");
            descParagraph6.createRun().addBreak();

            descParagraph6.createRun().setText("ID: 日程的唯一标识符");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("类型: 日程的类型");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("标题: 日程的标题");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("描述: 对该日程的描述");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("开始时间: 日程的开始时间");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("截止时间: 日程的截止时间");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("发起人: 日程的发起人");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("部门名称: 日程相关的部门名称");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("状态: 日程的当前状态");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("接收人: 日程的接收人");
            descParagraph6.createRun().addBreak();
            descParagraph6.createRun().setText("会议室: 日程的举办会议室");

            // 添加数据到表格
            for (ScheduleResp scheduleResp : myScheduleList) {
                XWPFTableRow row = table6.createRow();
                row.getCell(0).setText(String.valueOf(scheduleResp.getId()));
                row.getCell(1).setText(scheduleResp.getType());
                row.getCell(2).setText(scheduleResp.getTitle());
                row.getCell(3).setText(scheduleResp.getDesc());
                row.getCell(4).setText(scheduleResp.getStarttime().toString());
                row.getCell(5).setText(scheduleResp.getDeadline().toString());
                row.getCell(6).setText(scheduleResp.getPromoter());
                row.getCell(7).setText(scheduleResp.getDeptname());
                row.getCell(8).setText(scheduleResp.getState());
                row.getCell(9).setText(scheduleResp.getRecipient());
                row.getCell(10).setText(scheduleResp.getBoardroom());
            }
            //会议室
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title7 = document.createParagraph();
            title7.createRun().setText("会议室使用情况");

            // 创建表格
            XWPFTable table7 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow7 = table7.getRow(0);
            headerRow7.getCell(0).setText("CNO");
            headerRow7.addNewTableCell().setText("开始时间");
            headerRow7.addNewTableCell().setText("结束时间");

            // 添加每列的说明
            XWPFParagraph descParagraph7 = document.createParagraph();
            descParagraph7.createRun().setText("会议室使用情况表格说明：");
            descParagraph7.createRun().addBreak();
            descParagraph7.createRun().setText("CNO: 会议室的房间号");
            descParagraph7.createRun().addBreak();
            descParagraph7.createRun().setText("开始时间: 会议室使用的开始时间");
            descParagraph7.createRun().addBreak();
            descParagraph7.createRun().setText("结束时间: 会议室使用的结束时间");

            // 添加数据到会议室使用日程表格
            for (UseBoardroomDataResp scheduleResp : boardroomSchedules) {
                XWPFTableRow row = table7.createRow();
                row.getCell(0).setText(scheduleResp.getCno());
                row.getCell(1).setText(scheduleResp.getStarttime().toString());
                row.getCell(2).setText(scheduleResp.getDeadline().toString());
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            // 添加板房信息标题
            XWPFParagraph boardroomTitle = document.createParagraph();
            boardroomTitle.createRun().setText("会议室信息");

            // 创建会议室信息表格
            XWPFTable boardroomTable = document.createTable();
            // 创建会议室信息表头
            XWPFTableRow boardroomHeaderRow = boardroomTable.getRow(0);
            boardroomHeaderRow.getCell(0).setText("id");
            boardroomHeaderRow.addNewTableCell().setText("CNO");
            boardroomHeaderRow.addNewTableCell().setText("人数");
            boardroomHeaderRow.addNewTableCell().setText("备注");

            XWPFParagraph descParagraph8 = document.createParagraph();
            descParagraph8.createRun().setText("会议室信息说明：");
            descParagraph8.createRun().addBreak();
            descParagraph8.createRun().setText("id: 会议室信息的唯一标识符");
            descParagraph8.createRun().addBreak();
            descParagraph8.createRun().setText("CNO: 会议室的房间号");
            descParagraph8.createRun().addBreak();
            descParagraph8.createRun().setText("人数: 会议室最大容纳人数");
            descParagraph8.createRun().addBreak();
            descParagraph8.createRun().setText("备注: 会议室使用的相应备注");
            // 添加数据到会议室信息表格
            for (BoardroomResp boardroomResp : boardroomList) {
                XWPFTableRow row = boardroomTable.createRow();
                row.getCell(0).setText(String.valueOf(boardroomResp.getId()));
                row.getCell(1).setText(boardroomResp.getCno());
                row.getCell(2).setText(String.valueOf(boardroomResp.getNumber()));
                row.getCell(3).setText(boardroomResp.getNotes());
            }
            //通知管理
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title9 = document.createParagraph();
            title9.createRun().setText("通知信息");
            // 创建表格
            XWPFTable table9 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow9 = table9.getRow(0);
            headerRow9.getCell(0).setText("ID");
            headerRow9.addNewTableCell().setText("类型");
            headerRow9.addNewTableCell().setText("标题");
            headerRow9.addNewTableCell().setText("描述");
            headerRow9.addNewTableCell().setText("发布时间");
            headerRow9.addNewTableCell().setText("发布人");
            headerRow9.addNewTableCell().setText("状态");
            headerRow9.addNewTableCell().setText("部门");
            headerRow9.addNewTableCell().setText("接收人");
            headerRow9.addNewTableCell().setText("审核状态");
            headerRow9.addNewTableCell().setText("审核人");
            headerRow9.addNewTableCell().setText("审核原因");

            // 添加每列的说明
            XWPFParagraph descParagraph9 = document.createParagraph();
            descParagraph9.createRun().setText("通知信息表格说明：");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("ID: 通知的唯一标识符");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("类型: 通知的类型");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("标题: 通知的标题");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("描述: 对该通知的描述");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("发布时间: 通知的发布时间");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("发布人: 通知的发布人");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("状态: 通知的当前状态");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("部门: 通知相关的部门名称");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("接收人: 通知的接收人");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("审核状态: 通知的审核状态（待审核/审核通过/审核未通过）");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("审核人: 通知的审核人");
            descParagraph9.createRun().addBreak();
            descParagraph9.createRun().setText("审核原因: 通知的审核原因");

            // 添加数据到表格
            for (NoticeResp noticeResp : noticeList) {
                XWPFTableRow row = table9.createRow();
                row.getCell(0).setText(String.valueOf(noticeResp.getId()));
                row.getCell(1).setText(noticeResp.getType());
                row.getCell(2).setText(noticeResp.getTitle());
                row.getCell(3).setText(noticeResp.getDesc());
                row.getCell(4).setText(noticeResp.getReleasetime().toString());
                row.getCell(5).setText(noticeResp.getReleaseperson());
                row.getCell(6).setText(noticeResp.getState());
                row.getCell(7).setText(noticeResp.getDept());
                row.getCell(8).setText(noticeResp.getRecipient());
                row.getCell(9).setText(noticeResp.getExamine());
                row.getCell(10).setText(noticeResp.getReviewer());
                row.getCell(11).setText(noticeResp.getExReason());
            }
            //通知列表
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title10 = document.createParagraph();
            title10.createRun().setText("通知列表(我可接收的通知)");

            // 创建表格
            XWPFTable table10 = document.createTable();

            // 创建表头
            XWPFTableRow headerRow10 = table10.getRow(0);
            headerRow10.getCell(0).setText("ID");
            headerRow10.addNewTableCell().setText("类型");
            headerRow10.addNewTableCell().setText("标题");
            headerRow10.addNewTableCell().setText("描述");
            headerRow10.addNewTableCell().setText("发布时间");
            headerRow10.addNewTableCell().setText("发布人");
            headerRow10.addNewTableCell().setText("状态");
            headerRow10.addNewTableCell().setText("部门");
            headerRow10.addNewTableCell().setText("接收人");
            headerRow10.addNewTableCell().setText("审核状态");
            headerRow10.addNewTableCell().setText("审核人");
            headerRow10.addNewTableCell().setText("审核原因");

            // 添加每列的说明
            XWPFParagraph descParagraph10 = document.createParagraph();
            descParagraph10.createRun().setText("通知列表(我可接收的通知)说明：");
            descParagraph10.createRun().addBreak();

            descParagraph10.createRun().setText("ID: 通知的唯一标识符");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("类型: 通知的类型");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("标题: 通知的标题");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("描述: 对该通知的描述");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("发布时间: 通知的发布时间");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("发布人: 通知的发布人");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("状态: 通知的当前状态");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("部门: 通知相关的部门名称");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("接收人: 通知的接收人");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("审核状态: 通知的审核状态（待审核/审核通过/审核未通过）");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("审核人: 通知的审核人");
            descParagraph10.createRun().addBreak();
            descParagraph10.createRun().setText("审核原因: 通知的审核原因");

            // 添加数据到表格
            for (NoticeResp noticeResp : myNoticeList) {
                XWPFTableRow row = table10.createRow();
                row.getCell(0).setText(String.valueOf(noticeResp.getId()));
                row.getCell(1).setText(noticeResp.getType());
                row.getCell(2).setText(noticeResp.getTitle());
                row.getCell(3).setText(noticeResp.getDesc());
                row.getCell(4).setText(noticeResp.getReleasetime().toString());
                row.getCell(5).setText(noticeResp.getReleaseperson());
                row.getCell(6).setText(noticeResp.getState());
                row.getCell(7).setText(noticeResp.getDept());
                row.getCell(8).setText(noticeResp.getRecipient());
                row.getCell(9).setText(noticeResp.getExamine());
                row.getCell(10).setText(noticeResp.getReviewer());
                row.getCell(11).setText(noticeResp.getExReason());
            }
            //请假管理
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title11 = document.createParagraph();
            title11.createRun().setText("请假管理（未审核）");

            // 创建表格
            XWPFTable table11 = document.createTable();

            // 创建表头
            XWPFTableRow headerRow11 = table11.getRow(0);
            headerRow11.getCell(0).setText("ID");
            headerRow11.addNewTableCell().setText("状态");
            headerRow11.addNewTableCell().setText("姓名");
            headerRow11.addNewTableCell().setText("类型");
            headerRow11.addNewTableCell().setText("开始时间");
            headerRow11.addNewTableCell().setText("截止时间");
            headerRow11.addNewTableCell().setText("理由");
            headerRow11.addNewTableCell().setText("申请时间");
            headerRow11.addNewTableCell().setText("审核状态");
            headerRow11.addNewTableCell().setText("审核人");
            headerRow11.addNewTableCell().setText("审核理由");

            // 添加每列的说明
            XWPFParagraph descParagraph11 = document.createParagraph();
            descParagraph11.createRun().setText("请假管理（未审核）表格说明：");
            descParagraph11.createRun().addBreak();

            descParagraph11.createRun().setText("ID: 请假的唯一标识符");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("状态: 请假的当前状态");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("姓名: 请假人的姓名");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("类型: 请假的类型");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("开始时间: 请假的开始时间");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("截止时间: 请假的截止时间");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("理由: 请假的理由");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("申请时间: 请假申请的时间");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("审核状态: 请假审核状态");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("审核人: 审核请假的人员");
            descParagraph11.createRun().addBreak();
            descParagraph11.createRun().setText("审核理由: 是否通过的原因");

            // 添加数据到表格
            for (VacationResp vacationResp : vacationList) {
                XWPFTableRow row = table11.createRow();
                row.getCell(0).setText(String.valueOf(vacationResp.getId()));
                row.getCell(1).setText(vacationResp.getState());
                row.getCell(2).setText(vacationResp.getName());
                row.getCell(3).setText(vacationResp.getType());
                row.getCell(4).setText(vacationResp.getStarttime().toString());
                row.getCell(5).setText(vacationResp.getDeadline().toString());
                row.getCell(6).setText(vacationResp.getReason());
                row.getCell(7).setText(vacationResp.getTime().toString());
                row.getCell(8).setText(vacationResp.getExamine());
                row.getCell(9).setText(vacationResp.getReviewer());
                row.getCell(10).setText(vacationResp.getExreason());
            }
            //请假列表
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title12 = document.createParagraph();
            title12.createRun().setText("请假管理（已审核）");

            // 创建表格
            XWPFTable table12 = document.createTable();

            // 创建表头
            XWPFTableRow headerRow12 = table12.getRow(0);
            headerRow12.getCell(0).setText("ID");
            headerRow12.addNewTableCell().setText("状态");
            headerRow12.addNewTableCell().setText("姓名");
            headerRow12.addNewTableCell().setText("类型");
            headerRow12.addNewTableCell().setText("开始时间");
            headerRow12.addNewTableCell().setText("截止时间");
            headerRow12.addNewTableCell().setText("理由");
            headerRow12.addNewTableCell().setText("申请时间");
            headerRow12.addNewTableCell().setText("审核状态");
            headerRow12.addNewTableCell().setText("审核人");
            headerRow12.addNewTableCell().setText("审核理由");

            // 添加每列的说明
            XWPFParagraph descParagraph12 = document.createParagraph();
            descParagraph12.createRun().setText("请假管理（已审核）表格说明：");
            descParagraph12.createRun().addBreak();

            descParagraph12.createRun().setText("ID: 请假的唯一标识符");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("状态: 请假的当前状态");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("姓名: 请假人的姓名");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("类型: 请假的类型");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("开始时间: 请假的开始时间");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("截止时间: 请假的截止时间");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("理由: 请假的理由");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("申请时间: 请假申请的时间");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("审核状态: 请假审核状态");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("审核人: 审核请假的人员");
            descParagraph12.createRun().addBreak();
            descParagraph12.createRun().setText("审核理由: 是否通过的原因");

            // 添加数据到表格
            for (VacationResp vacationResp : approvedVacationList) {
                XWPFTableRow row = table12.createRow();
                row.getCell(0).setText(String.valueOf(vacationResp.getId()));
                row.getCell(1).setText(vacationResp.getState());
                row.getCell(2).setText(vacationResp.getName());
                row.getCell(3).setText(vacationResp.getType());
                row.getCell(4).setText(vacationResp.getStarttime().toString());
                row.getCell(5).setText(vacationResp.getDeadline().toString());
                row.getCell(6).setText(vacationResp.getReason());
                row.getCell(7).setText(vacationResp.getTime().toString());
                row.getCell(8).setText(vacationResp.getExamine());
                row.getCell(9).setText(vacationResp.getReviewer());
                row.getCell(10).setText(vacationResp.getExreason());
            }
            //报表列表
            // 添加标题
            XWPFParagraph title22 = document.createParagraph();
            title22.createRun().setText("工作时间表");
            // 创建表格
            XWPFTable table22 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow22 = table22.getRow(0);
            headerRow22.getCell(0).setText("员工ID");
            headerRow22.addNewTableCell().setText("员工名称");
            headerRow22.addNewTableCell().setText("部门Id");
            headerRow22.addNewTableCell().setText("工作时间");
            XWPFParagraph descParagraph22 = document.createParagraph();
            descParagraph22.createRun().setText("工作时间表格说明：每条数据为一个员工实际工作时间的信息");
            descParagraph22.createRun().addBreak();

            descParagraph22.createRun().setText("ID: 员工的唯一标识符");
            descParagraph22.createRun().addBreak();
            descParagraph22.createRun().setText("员工名称: 就是员工姓名");
            descParagraph22.createRun().addBreak();
            descParagraph22.createRun().setText("部门Id: 该员工所在的部门ID");
            descParagraph22.createRun().addBreak();
            descParagraph22.createRun().setText("工作时间: 该员工实际工作时间");
            // 添加数据到表格
            for (WorkTimeResp workTimeResp : workTime) {
                XWPFTableRow row = table22.createRow();
                row.getCell(0).setText(String.valueOf(workTimeResp.getId()));
                row.getCell(1).setText(workTimeResp.getName());
                row.getCell(2).setText(String.valueOf(workTimeResp.getDeptId()));
                row.getCell(3).setText(String.valueOf(workTimeResp.getWorkTime()));
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title122 = document.createParagraph();
            title122.createRun().setText("绩效表");
            // 创建表格
            XWPFTable table122 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow122 = table122.getRow(0);
            headerRow122.getCell(0).setText("员工ID");
            headerRow122.addNewTableCell().setText("员工名称");
            headerRow122.addNewTableCell().setText("部门Id");
            headerRow122.addNewTableCell().setText("部门名称");
            headerRow122.addNewTableCell().setText("绩效");
            XWPFParagraph descParagraph122 = document.createParagraph();
            descParagraph122.createRun().setText("绩效表格说明：每条数据为一个员工绩效的信息");
            descParagraph122.createRun().addBreak();
            descParagraph122.createRun().setText("ID: 员工的唯一标识符");
            descParagraph122.createRun().addBreak();
            descParagraph122.createRun().setText("员工名称: 就是员工姓名");
            descParagraph122.createRun().addBreak();
            descParagraph122.createRun().setText("部门Id: 该员工所在的部门ID");
            descParagraph122.createRun().addBreak();
            descParagraph122.createRun().setText("部门名称: 该员工所在的部门名称");
            descParagraph122.createRun().addBreak();
            descParagraph122.createRun().setText("绩效: 该员工的绩效");
            // 添加数据到表格
            for (PerformanceResp performanceResp : performance) {
                XWPFTableRow row = table122.createRow();
                row.getCell(0).setText(String.valueOf(performanceResp.getId()));
                row.getCell(1).setText(performanceResp.getName());
                row.getCell(2).setText(String.valueOf(performanceResp.getDeptId()));
                row.getCell(3).setText(performanceResp.getDeptName());
                row.getCell(4).setText(String.valueOf(performanceResp.getScore()));
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title23 = document.createParagraph();
            title23.createRun().setText("任务完成率表");
            // 创建表格
            XWPFTable table23 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow23 = table23.getRow(0);
            headerRow23.getCell(0).setText("员工ID");
            headerRow23.addNewTableCell().setText("员工名称");
            headerRow23.addNewTableCell().setText("部门Id");
            headerRow23.addNewTableCell().setText("任务完成率");
            XWPFParagraph descParagraph23 = document.createParagraph();
            descParagraph23.createRun().setText("任务完成率表格说明：每条数据为一个员工任务完成率的信息");
            descParagraph23.createRun().addBreak();
            descParagraph23.createRun().setText("ID: 员工的唯一标识符");
            descParagraph23.createRun().addBreak();
            descParagraph23.createRun().setText("员工名称: 就是员工姓名");
            descParagraph23.createRun().addBreak();
            descParagraph23.createRun().setText("部门Id: 该员工所在的部门ID");
            descParagraph23.createRun().addBreak();
            descParagraph23.createRun().setText("任务完成率: 该员工的任务完成率");
            // 添加数据到表格
            for (TaskRateResp taskRateResp : taskRate) {
                XWPFTableRow row = table23.createRow();
                row.getCell(0).setText(String.valueOf(taskRateResp.getId()));
                row.getCell(1).setText(taskRateResp.getName());
                row.getCell(2).setText(String.valueOf(taskRateResp.getDeptId()));
                row.getCell(3).setText(String.valueOf(taskRateResp.getRate()));
            }
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title34 = document.createParagraph();
            title34.createRun().setText("模块使用情况表");
            // 创建表格
            XWPFTable table34 = document.createTable();
            // 创建表头
            XWPFTableRow headerRow34 = table34.getRow(0);
            headerRow34.getCell(0).setText("模块名称");
            headerRow34.addNewTableCell().setText("使用次数");
            XWPFParagraph descParagraph34 = document.createParagraph();
            descParagraph34.createRun().setText("模块使用情况表格说明：每条数据为一个模块的使用情况信息");
            descParagraph34.createRun().addBreak();
            descParagraph34.createRun().setText("模块名称: 模块的名称");
            descParagraph34.createRun().addBreak();
            descParagraph34.createRun().setText("使用次数: 模块的使用次数");
            // 添加数据到表格
            for (UseSituationResp useSituationResp : useSituation) {
                XWPFTableRow row = table34.createRow();
                row.getCell(0).setText(String.valueOf(useSituationResp.getName()));
                row.getCell(1).setText(String.valueOf(useSituationResp.getCount()));
            }
            //审批管理
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

                // 添加标题
                XWPFParagraph title13 = document.createParagraph();
                title13.createRun().setText("通知审批表");

                // 创建任务信息表格
                XWPFTable table13 = document.createTable();
                // 创建任务表头
                XWPFTableRow headerRow13 = table13.getRow(0);
                headerRow13.getCell(0).setText("ID");
                headerRow13.addNewTableCell().setText("类型");
                headerRow13.addNewTableCell().setText("标题");
                headerRow13.addNewTableCell().setText("描述");
                headerRow13.addNewTableCell().setText("发布时间");
                headerRow13.addNewTableCell().setText("发布人");
                headerRow13.addNewTableCell().setText("状态");
                headerRow13.addNewTableCell().setText("部门");
                headerRow13.addNewTableCell().setText("接收人");
                headerRow13.addNewTableCell().setText("审核状态");
                headerRow13.addNewTableCell().setText("审核人");
                headerRow13.addNewTableCell().setText("审核原因");

                // 添加每列的说明
                XWPFParagraph descParagraph13 = document.createParagraph();
                descParagraph13.createRun().setText("通知审批表格说明：每条数据为一个待审批通知的信息，且不要根据ID统计");
                descParagraph13.createRun().addBreak();

                descParagraph13.createRun().setText("ID: 通知的唯一标识符");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("类型: 通知的类型");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("标题: 通知的标题");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("描述: 对该通知的描述");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("发布时间: 通知的发布时间");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("发布人: 通知的发布人");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("状态: 通知的当前状态");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("部门: 通知相关的部门名称");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("接收人: 通知的接收人");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("审核状态: 通知的审核状态（待审核/审核通过/审核未通过）");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("审核人: 通知的审核人");
                descParagraph13.createRun().addBreak();
                descParagraph13.createRun().setText("审核原因: 通知的审核原因");

                // 添加数据到表格
                for (NoticeResp noticeResp : iCanApprovedNotices) {
                    XWPFTableRow row = table13.createRow();
                    row.getCell(0).setText(String.valueOf(noticeResp.getId()));
                    row.getCell(1).setText(noticeResp.getType());
                    row.getCell(2).setText(noticeResp.getTitle());
                    row.getCell(3).setText(noticeResp.getDesc());
                    row.getCell(4).setText(noticeResp.getReleasetime().toString());
                    row.getCell(5).setText(noticeResp.getReleaseperson());
                    row.getCell(6).setText(noticeResp.getState());
                    row.getCell(7).setText(noticeResp.getDept());
                    row.getCell(8).setText(noticeResp.getRecipient());
                    row.getCell(9).setText(noticeResp.getExamine());
                    row.getCell(10).setText(noticeResp.getReviewer());
                    row.getCell(11).setText(noticeResp.getExReason());
                }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            XWPFParagraph title14 = document.createParagraph();
            title14.createRun().setText("请假审批表");
            // 添加请假信息表格
            XWPFTable vacationTable1 = document.createTable();

            // 创建请假信息表头
            XWPFTableRow vacationHeaderRow = vacationTable1.getRow(0);
            vacationHeaderRow.getCell(0).setText("ID");
            vacationHeaderRow.addNewTableCell().setText("状态");
            vacationHeaderRow.addNewTableCell().setText("姓名");
            vacationHeaderRow.addNewTableCell().setText("类型");
            vacationHeaderRow.addNewTableCell().setText("开始时间");
            vacationHeaderRow.addNewTableCell().setText("截止时间");
            vacationHeaderRow.addNewTableCell().setText("理由");
            vacationHeaderRow.addNewTableCell().setText("申请时间");
            vacationHeaderRow.addNewTableCell().setText("审核状态");
            vacationHeaderRow.addNewTableCell().setText("审核人");
            vacationHeaderRow.addNewTableCell().setText("审核理由");

            // 添加每列的说明
            XWPFParagraph descParagraph14 = document.createParagraph();
            descParagraph14.createRun().setText("请假审核表格说明：");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("ID: 请假的唯一标识符");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("状态: 请假的当前状态");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("姓名: 请假人的姓名");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("类型: 请假的类型");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("开始时间: 请假的开始时间");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("截止时间: 请假的截止时间");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("理由: 请假的理由");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("申请时间: 请假申请的时间");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("审核状态: 请假审核状态");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("审核人: 审核请假的人员");
            descParagraph14.createRun().addBreak();
            descParagraph14.createRun().setText("审核理由: 是否通过的原因");

            // 添加数据到请假信息表格
            for (VacationResp vacationResp : iCanApprovedVacations) {
                XWPFTableRow row = vacationTable1.createRow();
                row.getCell(0).setText(String.valueOf(vacationResp.getId()));
                row.getCell(1).setText(vacationResp.getState());
                row.getCell(2).setText(vacationResp.getName());
                row.getCell(3).setText(vacationResp.getType());
                row.getCell(4).setText(vacationResp.getStarttime().toString());
                row.getCell(5).setText(vacationResp.getDeadline().toString());
                row.getCell(6).setText(vacationResp.getReason());
                row.getCell(7).setText(vacationResp.getTime().toString());
                row.getCell(8).setText(vacationResp.getExamine());
                row.getCell(9).setText(vacationResp.getReviewer());
                row.getCell(10).setText(vacationResp.getExreason());
            }
            //考勤管理
            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title15 = document.createParagraph();
            title15.createRun().setText("考勤记录表");

            // 创建考勤信息表格
            XWPFTable attendanceTable1 = document.createTable();
            // 创建考勤表头
            XWPFTableRow attendanceHeaderRow1 = attendanceTable1.getRow(0);
            attendanceHeaderRow1.getCell(0).setText("类型");
            attendanceHeaderRow1.addNewTableCell().setText("姓名");
            attendanceHeaderRow1.addNewTableCell().setText("打卡时间");
            attendanceHeaderRow1.addNewTableCell().setText("备注");
            attendanceHeaderRow1.addNewTableCell().setText("状态");

            // 添加每列的说明
            XWPFParagraph attendanceDescParagraph1 = document.createParagraph();
            attendanceDescParagraph1.createRun().setText("考勤记录说明：");
            attendanceDescParagraph1.createRun().addBreak();
            attendanceDescParagraph1.createRun().setText("类型: 考勤记录的类型，分为上班，下班");
            attendanceDescParagraph1.createRun().addBreak();
            attendanceDescParagraph1.createRun().setText("姓名: 考勤记录者的姓名");
            attendanceDescParagraph1.createRun().addBreak();
            attendanceDescParagraph1.createRun().setText("时间: 考勤记录的时间");
            attendanceDescParagraph1.createRun().addBreak();
            attendanceDescParagraph1.createRun().setText("备注: 针对考勤记录的补充说明");
            attendanceDescParagraph1.createRun().addBreak();
            attendanceDescParagraph1.createRun().setText("状态: 考勤的状态");

            // 添加数据到考勤信息表格
            for (AttendanceResp attendance : attendanceList) {
                XWPFTableRow row = attendanceTable1.createRow();
                row.getCell(0).setText(attendance.getType());
                row.getCell(1).setText(attendance.getName());
                row.getCell(2).setText(attendance.getTime());
                row.getCell(3).setText(attendance.getNotes());
                row.getCell(4).setText(attendance.getState());
            }

            // 插入分隔段落
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔

            XWPFParagraph title16 = document.createParagraph();
            title16.createRun().setText("考勤标准表");

            // 创建时间标准信息表格
            XWPFTable standardTable = document.createTable();

            // 创建时间标准表头
            XWPFTableRow standardHeaderRow = standardTable.getRow(0);
            standardHeaderRow.getCell(0).setText("时间ID");
            standardHeaderRow.addNewTableCell().setText("时间");
            standardHeaderRow.addNewTableCell().setText("类型");

            // 添加每列的说明
            XWPFParagraph standardDescParagraph = document.createParagraph();
            standardDescParagraph.createRun().setText("时间标准说明：");
            standardDescParagraph.createRun().addBreak();
            standardDescParagraph.createRun().setText("时间ID: 时间标准的唯一标识符");
            standardDescParagraph.createRun().addBreak();
            standardDescParagraph.createRun().setText("时间: 时间的标准值");
            standardDescParagraph.createRun().addBreak();
            standardDescParagraph.createRun().setText("类型: 时间标准的类型，分为上班，下班");

            // 添加数据到时间标准信息表格
            for (OaTimeStandards standard : standards) {
                XWPFTableRow row = standardTable.createRow();
                row.getCell(0).setText(String.valueOf(standard.getNTimeId()));
                row.getCell(1).setText(standard.getDtTime().toString());
                row.getCell(2).setText(standard.getCType());
            }
            //文件管理
            document.createParagraph().createRun().setText("\n"); // 添加空行以分隔
            // 添加标题
            XWPFParagraph title17 = document.createParagraph();
            title17.createRun().setText("文件管理");

            // 创建表格
            XWPFTable table17 = document.createTable();

            // 创建表头
            XWPFTableRow headerRow17 = table17.getRow(0);
            headerRow17.getCell(0).setText("文件ID");
            headerRow17.addNewTableCell().setText("文件名称");
            headerRow17.addNewTableCell().setText("文件大小");
            headerRow17.addNewTableCell().setText("更新时间");
            headerRow17.addNewTableCell().setText("上传人姓名");

            // 添加每列的说明
            XWPFParagraph descParagraph17 = document.createParagraph();
            descParagraph17.createRun().setText("文件管理表格说明：");
            descParagraph17.createRun().addBreak();

            descParagraph17.createRun().setText("文件ID: 文件的唯一标识符");
            descParagraph17.createRun().addBreak();
            descParagraph17.createRun().setText("文件名称: 文件的名称");
            descParagraph17.createRun().addBreak();
            descParagraph17.createRun().setText("文件大小: 文件的大小");
            descParagraph17.createRun().addBreak();
            descParagraph17.createRun().setText("更新时间: 文件最后的更新时间");
            descParagraph17.createRun().addBreak();
            descParagraph17.createRun().setText("上传人姓名: 上传该文件的用户姓名");

            // 添加数据到表格
            for (FileResp fileResp : fileList) {
                XWPFTableRow row = table17.createRow();
                row.getCell(0).setText(String.valueOf(fileResp.getNFileId()));
                row.getCell(1).setText(fileResp.getCFileName());
                row.getCell(2).setText(fileResp.getCFileName());
                row.getCell(3).setText(fileResp.getDtUploadTime().toString());
                row.getCell(4).setText(fileResp.getCUserName());
            }

            // 将文档写入到文件,如果已存在则会更新文档
            try (FileOutputStream out = new FileOutputStream("src/main/resources/uploads/整个系统的信息.docx")) {
                document.write(out);
                System.out.println("导入“整个系统的信息.docx”成功");
            }
            // 关闭文档
            document.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("更新完成时间"+LocalDateTime.now());
        return "更新docx文件成功";
    }
}
